Fix YouTube casting by adding Content-Length header#1155
Open
andrew-kurin wants to merge 1 commit intohome-assistant-libs:masterfrom
Open
Fix YouTube casting by adding Content-Length header#1155andrew-kurin wants to merge 1 commit intohome-assistant-libs:masterfrom
andrew-kurin wants to merge 1 commit intohome-assistant-libs:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
YouTube casting via
YouTubeControllerfails with HTTP 400 error:This affects tools like catt that use pychromecast for YouTube casting.
Root Cause
YouTube's lounge API now requires the
Content-Lengthheader on POST requests. This is a recent change on YouTube's side.Prior Art
This issue was first identified in the upstream
casttubelibrary:Content-Lengthheader to POST requests ur1katz/casttube#15Since pychromecast's
TimeoutYouTubeSessionclass overrides the_do_post()method from casttube, the fix needs to be applied here as well.Fix
HEADERSdict instead of referencing it directly (to avoid mutating the shared constant)Content-Lengthheader for dict POST data usingurllib.parse.urlencode()Testing
Tested with catt v0.13.1 casting YouTube videos to Google Nest Hub - works after applying this fix.
Notes
The casttube maintainer appears inactive (PR open for 2+ years), so this fix in pychromecast is necessary for the ecosystem to work properly.